package com.PAT.UnSatisfying;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zjz
 * @Date: 2022/01/27/10:29
 * @Description: 卡标走一个数，如何卡标走？
 * @Target: 差4
 */
public class 谷歌的招聘 {

    // 自然常数 e 是一个著名的超越数，前面若干位写出来是这样的：
    // e = 2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642"""7427466391"""932003059921...
    // 其中粗体标出的 10 位数就是答案。

    // 012 3456789
    //本题要求你编程解决一个更通用的问题：从任一给定的长度为 L 的数字中，找出最早出现的 K 位连续数字所组成的素数。
    // 输出格式：
    //在一行中输出 N 中最早出现的 K 位连续数字所组成的素数。如果这样的素数不存在，则输出 404。注意，原始数字中的前导零也计算在位数之内。例如在 200236 中找 4 位素数，0023 算是解；但第一位 2 不能被当成 0002 输出，因为在原始数字中不存在这个 2 的前导零。


    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        String s1 = in.nextLine();
        String[] s = s1.split(" ");
        int frame = Integer.valueOf(s[1]);
        String ss = in.nextLine();
        boolean flag = false; // 两个作用，一个是判断有值了，一个是判断一直没值

        if (ss.length()==frame&&getPrimeNum(ss)==true){
            System.out.print(ss);
            flag = true;
        }


        for (int i = 0; i <= ss.length()-frame; i++) {
            String substring = ss.substring(i, i + frame);
            if (getPrimeNum(substring)==true&&flag==false){
                System.out.print(substring);
                flag = true;
            }
        }

        if (flag==false){
            System.out.print("404");
        }



    }
   // 是质数就返回true，不是就是false
    public static boolean  getPrimeNum(String ss){
        boolean flag = true;
        Integer integer = Integer.valueOf(ss);
        if (integer==0||integer==1){
            return false;
        }
        for (int i = 2; i <= Math.sqrt(integer); i++) {
            if (integer%i==0){
                flag = false;
            }
        }


        return flag;
    }
}
